home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 06 - 1990 / 06.05 May 90 / CountADBs.text next >
Encoding:
Text File  |  1990-04-16  |  3.1 KB  |  170 lines  |  [TEXT/MACA]

  1.  
  2. #define ADB_TIMEOUT        10000
  3.  
  4. extern char Scratch8[]    :    0x9FA;
  5.  
  6. ADBComplete(){
  7.     *(char *)Scratch8 = TRUE;
  8. }
  9.  
  10.  
  11. ADBIndAvail(index)
  12.     short                index;
  13.     {
  14.         ADBAddress        addrs;
  15.         ADBDataBlock    devBlock;
  16.         OSErr                err;
  17.         short                cmdNum;
  18.         Str255            ADBData;
  19.     
  20.         addrs = GetIndADB(&devBlock,index);
  21.         cmdNum = ((addrs*16)+0xF);
  22.         ADBData[0] = 0;
  23.         ADBData[1] = 0;
  24.         ADBData[2] = 0;
  25.     
  26.         *(char *)Scratch8 = FALSE;
  27.         err = ADBOp(NIL,ADBComplete,&ADBData,cmdNum);
  28.         if (!err){
  29.             short I= 0;
  30.         
  31.             do
  32.                 if (++I > ADB_TIMEOUT) *(char *)Scratch8 = TRUE; 
  33.             while (!*(char *)Scratch8);
  34.         
  35.             if (ADBData[0] != 0) return (TRUE);
  36.     }
  37.     
  38.     return (FALSE);
  39. }
  40.  
  41.  
  42. #include "MacTypes.h"
  43. #include "HyperXCmd.h"
  44. #include "DeskBus.h"
  45. #include "SetUpA4.h"
  46.  
  47. #define ADB_KEYBOARD        2
  48. #define ADB_MOUSE            3
  49.  
  50. #define STANDARD_KBD        1
  51. #define EXTENDED_KBD        2
  52.  
  53. #define MAX_ADB_DEVICES    16
  54.  
  55. pascal main(paramPtr)
  56.    XCmdBlockPtr    paramPtr;
  57.    {
  58.    Str255            str;
  59.    short                ix;
  60.    
  61.    RememberA0();
  62.    SetUpA4();
  63.    
  64.    if(paramPtr->paramCount == 1){
  65.        ZeroToPas(paramPtr,*((unsigned char **)paramPtr->params[0]),str);
  66.       if (str[0] == 1){
  67.           if (str[1] == '?') 
  68.                 pstrcpy(str,"\pKBDAvail()");
  69.           else if (str[1] == '!') 
  70.                 pstrcpy(str,"\pv1.0; © Pharos Technologies, Inc. 1989");
  71.       }
  72.       goto Done;
  73.       }
  74.    
  75.    if (!ADBExists()){ 
  76.         pstrcpy(str,"\p0\rnoADB"); 
  77.         goto Done; 
  78.     }
  79.        
  80.     for ( ix  =1; ix <=MAX_ADB_DEVICES; ix ++){
  81.         ADBDataBlock        ADBinfo;
  82.         ADBAddress            ADBaddr;
  83.         
  84.         if (!ADBIndAvail( ix )) continue;
  85.         ADBaddr = GetIndADB(&ADBinfo,I);
  86.         if (ADBaddr <= 0) continue;
  87.         if (ADBinfo.origADBAddr == ADB_MOUSE){ 
  88.             pstrcpy(str,"\ptrue"); 
  89.             goto Done; 
  90.         }
  91.     }
  92.     pstrcpy(str,"\pfalse");
  93.         
  94. Done:
  95.    paramPtr->returnValue = PasToZero(paramPtr,(StringPtr)str);
  96.    RestoreA4();
  97. }
  98.  
  99. #include "MacTypes.h"
  100. #include "HyperXCmd.h"
  101. #include "DeskBus.h"
  102. #include "SetUpA4.h"
  103.  
  104. #define ADB_KEYBOARD        2
  105. #define ADB_MOUSE            3
  106.  
  107. #define STANDARD_KBD        1
  108. #define EXTENDED_KBD        2
  109.  
  110. #define MAX_ADB_DEVICES    16
  111.  
  112.  
  113. pascal main(paramPtr)
  114.    XCmdBlockPtr    paramPtr;
  115.    {
  116.    Str255            str;
  117.    short                I;
  118.    
  119.    RememberA0();
  120.    SetUpA4();
  121.    
  122.    if (paramPtr->paramCount == 1){
  123.        ZeroToPas(paramPtr,*((unsigned char **)paramPtr->params[0]),str);
  124.       if (str[0] == 1){
  125.           if (str[1] == '?') 
  126.                 pstrcpy(str,"\pKBDAvail()");
  127.           else if (str[1] == '!') 
  128.                 pstrcpy(str,"\pv1.0; © Pharos Technologies, Inc. 1989");
  129.       }
  130.       goto Done;
  131.     }
  132.    
  133.    if (!ADBExists()){ 
  134.         pstrcpy(str,"\p0\rnoADB"); 
  135.         goto Done; 
  136.     }
  137.        
  138.     for (I=1;I<=MAX_ADB_DEVICES;I++){
  139.         ADBDataBlock        ADBinfo;
  140.         ADBAddress            ADBaddr;
  141.         
  142.         if (!ADBIndAvail(I)) continue;
  143.         ADBaddr = GetIndADB(&ADBinfo,I);
  144.         if (ADBaddr <= 0) continue;
  145.  
  146.         if (ADBinfo.origADBAddr == ADB_KEYBOARD){
  147.             if (ADBinfo.devType == STANDARD_KBD){ 
  148.                 pstrcpy(str,"\ptrue,standard"); 
  149.                 goto Done; 
  150.             }
  151.             else if (ADBinfo.devType == EXTENDED_KBD){ 
  152.                 pstrcpy(str,"\ptrue,extended"); 
  153.                 goto Done; 
  154.             }
  155.             else{ 
  156.                 pstrcpy(str,"\ptrue,unknown"); 
  157.                 goto Done; 
  158.             }
  159.         }
  160.  
  161.     }
  162.     pstrcpy(str,"\pfalse");
  163.         
  164. Done:
  165.    paramPtr->returnValue = PasToZero(paramPtr,(StringPtr)str);
  166.    RestoreA4();
  167.    }
  168.  
  169.  
  170.